/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package rapc;

import jcolibri.cbrcore.Attribute;


/**
 *
 * @author Gianfranco
 */
public class descripteurNumerique implements descripteur{
    
    private String caseId;
    private String Nom;
    private double default_value;
    private double Norm;
    private String Explication;
    private double min;
    private double max;
    private float poids=1;
   

    @Override
    public String toString()
    {
        return caseId+";"+Nom+";"+Explication+";"+Norm+";"+min+";"+max+";"+ default_value+";"+ poids+";"+"Numerique";
    }
    
    @Override
    public String getNom()
    {
        return this.Nom;    
    }
    
    public double getDefault()
    {
        return this.default_value;        
    }
    
    public void setDefault(double d)
    {
        this.default_value = d;
    }
    
    @Override
    public void setNom(String n)
    {
        this.Nom = n;
    }
    
    @Override
    public String getExplication()
    {
        return this.Explication;
    }
    
    @Override
    public void setExplication(String e)
    {
        this.Explication = e;
    }
    
    @Override
    public String getCaseId()
    {
        return this.caseId;
    }
    
    @Override
    public void setCaseId(String c)
    {
        this.caseId = c;
    }
    

    @Override
    public String getType()
    {
        return "Numerique";   
    }
    
    public double getMin()
    {
        return this.min;
    }
    public void setMin(double m)
    {
        this.min = m;
    }
    
    public double getMax()
    {
        return this.max;
    }
    
    
    public void setMax(double m)
    {
        this.max = m;
    }
    
      public double getNorm()
    {
        return this.Norm;
    }
    
    
    public void setNorm(double m)
    {
        this.Norm = m;
    }

    public Attribute getIdAttribute() {
        return new Attribute("caseId", this.getClass());
    }

    public float getPoids() {
       return poids;
    }

    public void Poids(float n) {
        this.poids=n;
    }
    
    public float similariteDescripteur(descripteurNumerique source, descripteurNumerique cible,String a, String b)
    {System.out.println("Numerique");
        double Source=Double.parseDouble(a);
        double Cible=Double.parseDouble(b);
        System.out.println("a:"+Source+"b:"+Cible);
        if(a == null ? b == null : a.equals(b))
        {
            return 1;
        }

        if(Cible<Source)
        { System.out.println("similarité dans le numerique:"+(float) (1-(Source-Cible) / (max - min)));
            return  (float) (1-(Source-Cible) / (max - min));
        }
 if(Cible>Source)
        { System.out.println("similarité dans le numerique:"+(float) (1-(Cible-Source) / (max - min)));
            return  (float) (1-(Cible-Source) / (max - min));
        }

        return 0;
    }

    public float similariteDescripteur(descripteur get, descripteur get0,String a, String b)
    {
       return similariteDescripteur((descripteurNumerique)get,(descripteurNumerique) get0,a,b);
    }
    
}
